﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL

Public Class ctrlListaEmpleados

    Private _llamador As frmMainMetro
    Private _ctrlNuevoEmpleado As ctrlNuevoEmpleado
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnNuevo.Text = _RM.GetString("btnNuevo")
        btnEditar.Text = _RM.GetString("btnEditar")
        btnEliminar.Text = _RM.GetString("btnEliminar")

        SetAyudaContextual()

    End Sub

    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Public Sub CargarGrilla()
        Dim oEmpleado As cEmpleado
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreeEmpleados.BeginUpdate()

        advTreeEmpleados.Nodes.Clear()

        Try
            colObjetos = GestorEmpleado.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oEmpleado In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.Tag = oEmpleado.Emp_Legajo
                    oNode.Text = oEmpleado.Emp_Legajo
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oEmpleado.Emp_NombreAp))
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oEmpleado.Emp_NroInterno))
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oEmpleado.Emp_Mail))
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oEmpleado.oDepartamento.Dep_Descrip))

                    advTreeEmpleados.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.EmpleadoFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreeEmpleados.EndUpdate()

        advTreeEmpleados.Refresh()

    End Sub

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs) Handles btnEliminar.Click
        Dim oAux As cEmpleado = New cEmpleado

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionEmpleados)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            If Not advTreeEmpleados.SelectedNode Is Nothing Then
                If MessageBox.Show("Confirma la eliminación del registro?", "Confirmar acción", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK Then
                    oAux.Emp_Legajo = Utils.Convert.ToInt16(advTreeEmpleados.SelectedNode.Tag)

                    Try
                        GestorEmpleado.Instance.Eliminar(oAux)
                        GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.EmpleadoBaja))

                        _llamador.RefrescarGrillas()

                    Catch ex As Excepciones.EmpleadoFalloBaja
                        Main.ManejarExcepcion(ex)
                    Catch ex As Exception
                        Main.ManejarExcepcion(ex)
                    End Try
                End If
            End If

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub btnEditar_Click(sender As Object, e As EventArgs) Handles btnEditar.Click
        Dim oAux As cEmpleado

        If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionEmpleados)) Then
            frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
            Exit Sub
        End If

        If Not advTreeEmpleados.SelectedNode Is Nothing Then
            Try
                oAux = New cEmpleado
                oAux.Emp_Legajo = Utils.Convert.ToInt16(advTreeEmpleados.SelectedNode.Tag)
                oAux = GestorEmpleado.Instance.Buscar(oAux)

                _llamador._ctrlNuevoEmpleado.CargarComboDepartamento()
                _llamador._ctrlNuevoEmpleado.MostrarParaEdicion(oAux)
                _llamador.ShowModalPanel(_llamador._ctrlNuevoEmpleado, DevComponents.DotNetBar.Controls.eSlideSide.Left)

            Catch ex As Excepciones.EmpleadoFalloBuscar
                Main.ManejarExcepcion(ex)
            Catch ex As Exception
                Main.ManejarExcepcion(ex)
            End Try
        End If
    End Sub

    Private Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click

        If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionEmpleados)) Then
            frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
            Exit Sub
        End If

        _llamador._ctrlNuevoEmpleado.CargarComboDepartamento()
        _llamador._ctrlNuevoEmpleado.MostrarParaAlta()
        _llamador.ShowModalPanel(_llamador._ctrlNuevoEmpleado, DevComponents.DotNetBar.Controls.eSlideSide.Left)

    End Sub

    Public Sub SetAyudaContextual()
        _RM = New ResourceManager("UI.AyudaContextual", System.Reflection.Assembly.GetExecutingAssembly)

        HelpProviderForm.SetHelpString(advTreeEmpleados, "Lista de empleados de la compañía")

    End Sub

    Public Sub Inicializar()

        CargarGrilla()
        SetAyudaContextual()

    End Sub

End Class
